import jwt
from jwt import PyJWTError

from comment.utils import const
from comment.models.user import User
from datetime import datetime,timedelta
def generate_tokens(uid):
    #根据已经登录之后的用户ID,生成token
    payload={
        'id':uid,
        # 是有效token的时间，必须是标准时间
        'exp':datetime.utcnow() + timedelta(seconds=const.JWT_EXPIRY_SECOND) #utcnow当前系统时间 + 自定义的秒数
    }
    #参数1：payload是一个字典包括加密的用户ID和有效时间 参数2：密钥 ,参数3：算法
    s=jwt.encode(payload=payload,key=const.SECRET_KEY,algorithm='HS256')
    #生成token
    return s




def verify_tokens(token_str):
    #验证token,并且验证完成之后，返回用户ID

    try:
        data=jwt.decode(token_str,key=const.SECRET_KEY,algorithms='HS256')#本质就是一个解密的过程
    except PyJWTError as e:
        return {'msg':'验证失败'},400
    #
    #如果验证成功，还需要看看当前用户状态是否正常
    user=User.query.filter(User.id == data['id']).first()
    if user and user.status != 0:
        return {'msg':'错误'},400
    return {'id':user.id}














